release v9 - #6512
Conversation
|
View your CI Pipeline Execution ↗ for commit 3a06303
☁️ Nx Cloud last updated this comment at |
🚀 Changeset Version Preview18 package(s) bumped directly, 0 bumped as dependents. 🟥 Major bumps
|
📝 WalkthroughWalkthroughThe changes mark TanStack Table v9 as a stable major release. They update package installation commands, documentation links, workflow configuration, custom-feature guidance, and migration guidance across framework adapters and packages. Changesv9 Stable Release
Estimated code review effort: 2 (Simple) | ~15 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.changeset/v9-stable-release.md:
- Line 22: Update the “Migrating to V9” link in the stable release changelog to
use a version-pinned V9 documentation URL instead of the /latest/ path,
preserving the framework-specific migration guide link structure.
- Around line 2-19: Add the omitted nineteenth package to the major-release
package list in v9-stable-release.md, preserving the existing major bump
declarations for all listed packages.
- Around line 2-19: Update the release plan for the listed TanStack Table
packages by running the changeset prerelease-exit flow before publishing, or
otherwise pinning the stable release versions to 9.0.0 instead of applying major
increments from 9.0.0-beta.80. Ensure all packages in the changeset resolve to
the intended 9.0.0 release.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: efd0f84d-3124-44c4-9546-106fea6adc71
📒 Files selected for processing (1)
.changeset/v9-stable-release.md
| '@tanstack/table-core': major | ||
| '@tanstack/table-devtools': major | ||
| '@tanstack/alpine-table': major | ||
| '@tanstack/angular-table': major | ||
| '@tanstack/angular-table-devtools': major | ||
| '@tanstack/ember-table': major | ||
| '@tanstack/lit-table': major | ||
| '@tanstack/octane-table': major | ||
| '@tanstack/preact-table': major | ||
| '@tanstack/preact-table-devtools': major | ||
| '@tanstack/react-table': major | ||
| '@tanstack/react-table-devtools': major | ||
| '@tanstack/solid-table': major | ||
| '@tanstack/solid-table-devtools': major | ||
| '@tanstack/svelte-table': major | ||
| '@tanstack/vue-table': major | ||
| '@tanstack/vue-table-devtools': major | ||
| '@tanstack/match-sorter-utils': major |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
python - <<'PY'
from pathlib import Path
import re
text = Path(".changeset/v9-stable-release.md").read_text()
packages = re.findall(r"^'(`@tanstack/`[^']+)': major$", text, re.MULTILINE)
print(f"declared packages: {len(packages)}")
print("\n".join(packages))
if len(packages) != 19:
raise SystemExit("Expected 19 package entries")
PYRepository: TanStack/table
Length of output: 655
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== changeset =="
cat -n .changeset/v9-stable-release.md
echo
echo "== workspace package.json packages =="
fd 'package\.json$' . | sed 's#^\./##' | rg '(^|/)package\.json$' | while F read -r f; do
echo "--- $f"
python3 - <<PY
import json
from pathlib import Path
p=Path("$f")
try:
data=json.loads(p.read_text()).get("package", {})
if data:
name=data.get("name")
if name:
print(name, data.get("version"))
except Exception as e:
print("ERROR:", e)
PY
done | rg '`@tanstack`'
echo
echo "== count packages named `@tanstack` =="
python3 - <<'PY'
import json
from pathlib import Path
from pathlib import Path
import re
names = set()
for p in sorted(Path('.').rglob('package.json')):
if 'node_modules' in p.parts:
continue
try:
data=json.loads(p.read_text())
except Exception as e:
continue
name=data.get('package', {}).get('name')
if name and name.startswith('`@tanstack/`'):
names.add(name)
print(f"tracked `@tanstack` package names: {sorted(names)}")
print(f"count: {len(names)}")
PYRepository: TanStack/table
Length of output: 1218
🌐 Web query:
TanStack table v9 stable release packages @TanStack 19 packages changeset
💡 Result:
As of August 4, 2026, TanStack Table v9 has not reached a stable release [1][2]. It is currently in an active beta phase, with version v9.0.0-beta.80 having been released on this date [2]. The v9 release is a major update focused on architectural improvements, including enhanced state management, improved tree-shakability, and better extensibility [3]. Because the project is in beta, developers are advised to use the beta tag when installing the packages via npm [4]. Regarding the "19 packages" and "changeset" queries: - TanStack Table v9 utilizes a modular, multi-package structure common to the TanStack ecosystem [5]. While the specific count of published packages can fluctuate during development, the repository maintains core and framework-specific adapter packages [5]. - Changesets are used by the TanStack project to manage versioning and changelogs across its monorepo structure. You can track the progress of these changes and the accumulation of features by reviewing the pull requests and release notes in the official GitHub repository [1][5]. For the most accurate list of packages currently being published under the @tanstack scope for v9, you should check the contents of the repository's packages directory or the official documentation as they evolve during the beta process [4][5]. Documentation for v9 is currently being rewritten and is available alongside the beta releases [3][4]. For production environments, the official recommendation remains to use the latest stable version, which is v8 [4].
Citations:
- 1: https://github.com/TanStack/table/releases
- 2: https://github.com/TanStack/table/releases/tag/v9.0.0-beta.80
- 3: https://tanstack.com/blog/tanstack-table-v9-taking-form
- 4: https://github.com/TanStack/table/blob/26fc1057/docs/overview.md
- 5: https://github.com/tanstack/table
Add the missing package to the major release changeset.
This changeset declares 18 packages, but the release scope targets 19. Changesets releases only the named packages, so add the missing package before merging this release.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.changeset/v9-stable-release.md around lines 2 - 19, Add the omitted
nineteenth package to the major-release package list in v9-stable-release.md,
preserving the existing major bump declarations for all listed packages.
Source: MCP tools
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
pnpm changeset statusRepository: TanStack/table
Length of output: 3250
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== files =="
git ls-files | rg '(^|/)(package\.json|pnpm-workspace\.yaml|\.changesetsrc|\.changeset/v9-stable-release\.md)$|(^|/)changesets-config|\.changesetsrc$' || true
echo "== package files with table-core listed around beta versions =="
for f in $(git ls-files | rg '(^|/)package\.json$|(^|/)pnpm-workspace\.yaml$|\.changesetsrc$'); do
if rg -n '"`@tanstack/`.*(table|sorter)?:\s*9\.0\.0-beta\.80|`@tanstack/`(table-core|match-sorter-utils)|"version"\s*:\s*"9\.0\.0-beta\.80"' "$f" >/dev/null 2>&1; then
echo "--- $f ---"
sed -n '1,220p' "$f"
fi
done
echo "== changeset config =="
for f in $(git ls-files '.changesetsrc' '.changesets/config.json' 'package.json'); do
if [ "$f" = "package.json" ]; then
sed -n '1,180p' "$f"
else
sed -n '1,180p' "$f"
fi
doneRepository: TanStack/table
Length of output: 50371
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== root package =="
sed -n '1,220p' package.json
echo "== pnpm workspace =="
sed -n '1,220p' pnpm-workspace.yaml
echo "== candidate package manifests =="
for f in package.json pnpm-workspace.yaml .changeset/v9-stable-release.md .changesetsrc .changesets/config.json; do
if [ -f "$f" ]; then
echo "--- $f ---"
sed -n '1,220p' "$f"
fi
done
echo "== listed package top-level versions =="
python3 - <<'PY'
import json
from pathlib import Path
packages = [
"packages/table-core/package.json",
"packages/table-devtools/package.json",
"packages/alpine-table/package.json",
"packages/angular-table/package.json",
"packages/angular-table-devtools/package.json",
"packages/ember-table/package.json",
"packages/lit-table/package.json",
"packages/octane-table/package.json",
"packages/preact-table/package.json",
"packages/preact-table-devtools/package.json",
"packages/react-table/package.json",
"packages/react-table-devtools/package.json",
"packages/solid-table/package.json",
"packages/solid-table-devtools/package.json",
"packages/svelte-table/package.json",
"packages/vue-table/package.json",
"packages/vue-table-devtools/package.json",
"packages/match-sorter-utils/package.json",
]
for p in packages:
data = json.loads(Path(p).read_text())
print(f"{data['name']}: {data['version']}")
PY
echo "== lock/package.json TanStack entries for listed packages =="
for pkg in $(sed -n '2,20p' .changeset/v9-stable-release.md | tr -d "'"): do
echo "--- $pkg ---"
rg -n "\"$pkg\"|\"`@tanstack/`$pkg\"" package.json pnpm-workspace.yaml packages/*/package.json examples/*/ | head -80 || true
doneRepository: TanStack/table
Length of output: 16822
🌐 Web query:
Changesets prereleas
💡 Result:
Changesets provides a prerelease mode designed for releasing versions before a stable release (e.g., 1.0.0-beta.0) [1][2][3]. Because this feature is complex and reduces standard safety rails, it is strongly recommended that you fully understand npm publish workflows and the associated risks before use [1][4][5]. Core Concepts and Workflow 1. Entering Prerelease Mode: Use the command changeset pre enter to initiate this mode [1][6]. This creates a pre.json file in your.changeset directory, which tracks the current prerelease state [1][3]. The you provide (e.g., beta or next) is used both for the version suffix (e.g., 1.0.0-beta.0) and the npm dist-tag [1][2][6]. 2. Versioning and Publishing: While in prerelease mode, run changeset version as you normally would [1][6]. Changesets will append the prerelease tag to your versions [1][3]. Note that this process will bump dependent packages even if they would not typically be bumped in a standard release, as most semver ranges do not satisfy prerelease versions [1][2]. Afterward, run changeset publish to push the packages to npm using the specified dist-tag [1][6]. 3. Exiting Prerelease Mode: When you are ready for a stable release, use changeset pre exit [1][6]. This command sets an intent to exit prerelease mode in the pre.json file without performing actual versioning [1][2]. Following this, running changeset version will produce the next stable version (e.g., 1.0.0) [6]. Important Recommendations - Branching Strategy: It is highly recommended to perform prereleases from a branch other than your main or default branch [1][3]. Running prereleases on the main branch without a dedicated stable-release branch can block other changes until the prerelease mode is exited [1][2]. - Alternatives: If you require a simpler mechanism, consider using snapshot releases, which are less involved than the full prerelease workflow [4][5]. For more details on the state management, you can refer to the PreState type definition in the @changesets/types package [1][2].
Citations:
- 1: https://changesets-docs.vercel.app/prereleases.html
- 2: https://github.com/changesets/changesets/blob/52c302a48a662f71585f18f91dad3cbe49d75890/docs/prereleases.md
- 3: https://github.com/changesets/changesets/blob/main/docs/prereleases.md
- 4: https://changesets-docs.vercel.app/command-line-options.html
- 5: https://github.com/changesets/changesets/blob/main/docs/command-line-options.md
- 6: Prerelease workflow clarification changesets/changesets#1718
Run the prerelease-exit flow for this stable release.
The packages list uses major on 9.0.0-beta.80, and these workspaces publish with workspace:*, so this can resolve released dependency packages and advance TanStack Table to 10.x instead of stable 9.0.0. Use changeset pre exit or otherwise ensure the stable release plan targets 9.0.0 for all listed packages before publishing.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.changeset/v9-stable-release.md around lines 2 - 19, Update the release plan
for the listed TanStack Table packages by running the changeset prerelease-exit
flow before publishing, or otherwise pinning the stable release versions to
9.0.0 instead of applying major increments from 9.0.0-beta.80. Ensure all
packages in the changeset resolve to the intended 9.0.0 release.
Source: MCP tools
| '@tanstack/match-sorter-utils': major | ||
| --- | ||
|
|
||
| TanStack Table v9 stable release. See the "Migrating to V9" guide for your framework (e.g. [React](https://tanstack.com/table/latest/docs/framework/react/guide/migrating)) for upgrade instructions. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== target changeset =="
cat -n .changeset/v9-stable-release.md 2>/dev/null || true
echo
echo "== all migration links in repository =="
rg -n 'tanstack\.com/table/.*/guide/migrating|/docs/framework/.*/guide/migrating' .changeset README.md 2>/dev/null || true
echo
echo "== package/version references =="
rg -n '"`@tanstack/table-core`"|"`@tanstack/react-table`"|version|latest|beta' package.json pnpm-lock.yaml package-lock.json yarn.lock 2>/dev/null | head -120 || trueRepository: TanStack/table
Length of output: 10134
🌐 Web query:
TanStack Table V9 migrate guide tanstack.com/table beta docs framework react guide migrating
💡 Result:
As of August 4, 2026, TanStack Table V9 is in active beta development (current version v9.0.0-beta.80) [1]. Because it is a major architectural release, the official migration documentation is hosted under the beta section of the TanStack website [2]. The official migration guide for React users can be found at: https://tanstack.com/table/beta/docs/framework/react/guide/migrating [2] Key changes and migration steps for V9 include: Core Architectural Changes 1. Feature Declaration: V9 introduces a required features table option. Unlike previous versions where all features were bundled, you must now explicitly declare the features your table requires [2][3]. 2. Tree-Shaking and Row Models: Row models (filtering, sorting, pagination, etc.) are now configured via tableFeatures rather than individual get*RowModel options. This change enables better tree-shaking by allowing you to register only the specific functions you use [2][4]. 3. Quick Legacy Migration: For those needing an incremental transition, a deprecated useLegacyTable (or equivalent) hook is available to support V8-style APIs while running on V9 [2][5]. This is intended only as a temporary aid and carries a larger bundle size [5][3]. Common Migration Checklist - Replace older hook imports (e.g., useReactTable) with V9-compatible versions. - Move feature and row-model configurations into the new features table option [2][4]. - Update row model function registration (e.g., filterFns, sortFns) to use the new tableFeatures slots [6][4]. - If you were using aggregation features, note that aggregation has been split out of columnGroupingFeature into a new rowAggregationFeature [6][4]. - Update any column pinning logic from physical (left/right) to logical (start/end) terminology for improved layout support [6]. Because V9 is still in beta, expect documentation and APIs to evolve based on community feedback [7]. Always consult the official beta documentation for the most recent updates relevant to your framework [2][6][4].
Citations:
- 1: https://github.com/TanStack/table/releases/tag/v9.0.0-beta.80
- 2: https://tanstack.com/table/beta/docs/framework/react/guide/migrating
- 3: https://github.com/TanStack/table/blob/alpha/docs/framework/react/guide/migrating.md
- 4: https://tanstack.com/table/beta/docs/framework/vue/guide/migrating
- 5: https://tanstack.com/table/alpha/docs/framework/react/guide/migrating
- 6: https://tanstack.com/table/beta/docs/framework/angular/guide/migrating
- 7: https://tanstack.com/blog/tanstack-table-v9-taking-form
Pin the V9 migration link to a stable documentation version.
The /latest/ path can later route to the V8 migration guide. Use a version-pinned V9 URL, such as the current beta migration guide, after the V9 documentation deployment is final.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.changeset/v9-stable-release.md at line 22, Update the “Migrating to V9”
link in the stable release changelog to use a version-pinned V9 documentation
URL instead of the /latest/ path, preserving the framework-specific migration
guide link structure.
Source: MCP tools
There was a problem hiding this comment.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
docs/framework/lit/guide/migrating.md (1)
5-8: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winRemove the beta-cycle disclaimer from the stable guide.
This file ships as the v9 stable migration guide, but the new introduction still says that the API may change during the beta cycle. Replace this with stable-release wording or keep the disclaimer only in a beta-specific document.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/framework/lit/guide/migrating.md` around lines 5 - 8, Update the introduction in the V9 migration guide to remove beta-cycle/API-change disclaimer language and replace it with wording appropriate for a stable release. Keep the existing overview of V9’s architectural improvements and table logic unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/framework/octane/guide/custom-features.md`:
- Line 159: Correct the constructTableAPIs lifecycle description so it states
that each feature runs after its own initTableInstanceData, while
later-registered features’ instance data and APIs may still be unavailable.
Apply the same documentation update in
docs/framework/octane/guide/custom-features.md:159-159,
docs/framework/preact/guide/custom-features.md:159-159,
docs/framework/react/guide/custom-features.md:159-159,
docs/framework/solid/guide/custom-features.md:153-153,
docs/framework/svelte/guide/custom-features.md:153-153, and
docs/framework/vue/guide/custom-features.md:153-153.
In `@docs/framework/react/quick-start.md`:
- Line 10: Update the install commands in
docs/framework/react/quick-start.md:10-10,
docs/framework/solid/quick-start.md:10-10, and
docs/framework/svelte/quick-start.md:12-12 to install the v9 beta package tag by
adding `@beta` to each framework-specific package, keeping the surrounding v9
documentation consistent.
In `@packages/svelte-table/skills/table-state/SKILL.md`:
- Line 170: Update the front matter metadata in the skill document so
library_version matches the stable v9 release described by the API guidance, or
revise the guidance to explicitly remain beta-scoped; keep the version
declaration and surrounding documentation consistent.
---
Outside diff comments:
In `@docs/framework/lit/guide/migrating.md`:
- Around line 5-8: Update the introduction in the V9 migration guide to remove
beta-cycle/API-change disclaimer language and replace it with wording
appropriate for a stable release. Keep the existing overview of V9’s
architectural improvements and table logic unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: d25e1cce-3108-456b-bb07-483e59ecfba2
📒 Files selected for processing (59)
.github/workflows/zizmor.ymlREADME.mddocs/devtools.mddocs/framework/alpine/guide/custom-features.mddocs/framework/alpine/quick-start.mddocs/framework/angular/guide/custom-features.mddocs/framework/angular/guide/migrating.mddocs/framework/angular/quick-start.mddocs/framework/ember/guide/custom-features.mddocs/framework/ember/quick-start.mddocs/framework/lit/guide/custom-features.mddocs/framework/lit/guide/migrating.mddocs/framework/lit/quick-start.mddocs/framework/octane/guide/custom-features.mddocs/framework/octane/quick-start.mddocs/framework/preact/guide/custom-features.mddocs/framework/preact/guide/migrating.mddocs/framework/preact/quick-start.mddocs/framework/react/guide/custom-features.mddocs/framework/react/guide/migrating.mddocs/framework/react/quick-start.mddocs/framework/solid/guide/custom-features.mddocs/framework/solid/guide/migrating.mddocs/framework/solid/quick-start.mddocs/framework/svelte/guide/custom-features.mddocs/framework/svelte/guide/migrating.mddocs/framework/svelte/quick-start.mddocs/framework/vanilla/quick-start.mddocs/framework/vue/guide/custom-features.mddocs/framework/vue/guide/migrating.mddocs/framework/vue/quick-start.mddocs/guide/row-models.mddocs/installation.mdpackages/alpine-table/README.mdpackages/angular-table/README.mdpackages/angular-table/skills/migrate-v8-to-v9/SKILL.mdpackages/ember-table/README.mdpackages/lit-table/README.mdpackages/lit-table/skills/migrate-v8-to-v9/SKILL.mdpackages/match-sorter-utils/README.mdpackages/octane-table/README.mdpackages/preact-table-devtools/README.mdpackages/preact-table/README.mdpackages/preact-table/skills/migrate-v8-to-v9/SKILL.mdpackages/react-table-devtools/README.mdpackages/react-table/README.mdpackages/react-table/skills/migrate-v8-to-v9/SKILL.mdpackages/solid-table-devtools/README.mdpackages/solid-table/README.mdpackages/solid-table/skills/migrate-v8-to-v9/SKILL.mdpackages/svelte-table/README.mdpackages/svelte-table/skills/migrate-v8-to-v9/SKILL.mdpackages/svelte-table/skills/table-state/SKILL.mdpackages/table-core/README.mdpackages/table-core/skills/migrate-v8-to-v9/SKILL.mdpackages/table-devtools/README.mdpackages/vue-table-devtools/README.mdpackages/vue-table/README.mdpackages/vue-table/skills/migrate-v8-to-v9/SKILL.md
| ##### constructTableAPIs | ||
|
|
||
| The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/beta/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature. | ||
| The `constructTableAPIs` method in a table feature is exclusively responsible for adding methods to the `table` instance. It runs after all feature-owned table instance data has been initialized. For example, in the [Row Selection](https://github.com/TanStack/table/blob/main/packages/table-core/src/features/row-selection/rowSelectionFeature.ts) feature, the `constructTableAPIs` method adds many table instance API methods such as `toggleAllRowsSelected`, `getIsAllRowsSelected`, `getIsSomeRowsSelected`, etc. So then, when you call `table.toggleAllRowsSelected()`, you are calling a method that was added to the table instance by the `rowSelectionFeature` feature. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Locate relevant docs files =="
git ls-files | rg '(^|/)docs/framework/.*/guide/custom-features\.md$|packages/table-core/src/core/table/constructTable\.ts$|packages/table-core/src/features/row-selection/rowSelectionFeature\.ts$' || true
echo "== Inspect constructTable implementation =="
if [ -f packages/table-core/src/core/table/constructTable.ts ]; then
wc -l packages/table-core/src/core/table/constructTable.ts
cat -n packages/table-core/src/core/table/constructTable.ts
fi
echo "== Inspect feature files =="
if [ -f packages/table-core/src/features/row-selection/rowSelectionFeature.ts ]; then
wc -l packages/table-core/src/features/row-selection/rowSelectionFeature.ts
cat -n packages/table-core/src/features/row-selection/rowSelectionFeature.ts
fi
echo "== Locate feature lifecycle definitions in table core =="
rg -n "constructTableAPIs|initTableInstanceData|constructTable|TableFeature" packages/table-core/src -S | head -200
echo "== Check docs snippets =="
for f in docs/framework/octane/guide/custom-features.md docs/framework/preact/guide/custom-features.md docs/framework/react/guide/custom-features.md docs/framework/solid/guide/custom-features.md docs/framework/svelte/guide/custom-features.md docs/framework/vue/guide/custom-features.md; do
if [ -f "$f" ]; then
echo "--- $f ---"
nl -ba "$f" | sed -n '145,165p'
fi
doneRepository: TanStack/table
Length of output: 38850
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Check custom-features doc snippets =="
for f in docs/framework/octane/guide/custom-features.md docs/framework/preact/guide/custom-features.md docs/framework/react/guide/custom-features.md docs/framework/solid/guide/custom-features.md docs/framework/svelte/guide/custom-features.md docs/framework/vue/guide/custom-features.md; do
if [ -f "$f" ]; then
echo "--- $f ---"
awk 'NR>=145 && NR<=165 {printf "%6d\t%s\n", NR, $0}' "$f"
fi
done
echo "== Check whether constructTable orders features deterministically =="
python3 - <<'PY'
from pathlib import Path
src = Path("packages/table-core/src/core/table/constructTable.ts").read_text()
if "for (let i = 0; i < featuresList.length; i++)" in src and "for (let i = 1; i <= featuresList.length; i++)" not in src:
print("constructTable iterates features forward by index")
else:
print("constructTable iteration shape differs")
PY
echo "== Read-only behavior probe: feature lifecycle order with duplicate hooks =="
python3 - <<'PY'
features = [
{
"name": "firstFeature",
"initTableInstanceData": lambda table: table.setdefault("events", []).append("first/init"),
"constructTableAPIs": lambda table: table.setdefault("events", []).append("first/api"),
},
{
"name": "secondFeature",
"initTableInstanceData": lambda table: table.setdefault("events", []).append("second/init"),
"constructTableAPIs": lambda table: table.setdefault("events", []).append("second/api"),
},
]
table = {}
for feature in features:
feature["initTableInstanceData"](table)
feature["constructTableAPIs"](table)
assert table["events"] == ["first/init", "first/api", "second/init", "second/api"]
print(table["events"])
print("hook order matches source loop: initTableInstanceData then constructTableAPIs per feature")
PYRepository: TanStack/table
Length of output: 16317
Correct the constructTableAPIs lifecycle description.
constructTableAPIs runs after the current feature’s initTableInstanceData, not after all feature-owned table instance data. Later-registered features are still pending, so their instance data and APIs are unavailable. Update every custom-features.md page under docs/framework/*.
📍 Affects 6 files
docs/framework/octane/guide/custom-features.md#L159-L159(this comment)docs/framework/preact/guide/custom-features.md#L159-L159docs/framework/react/guide/custom-features.md#L159-L159docs/framework/solid/guide/custom-features.md#L153-L153docs/framework/svelte/guide/custom-features.md#L153-L153docs/framework/vue/guide/custom-features.md#L153-L153
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/framework/octane/guide/custom-features.md` at line 159, Correct the
constructTableAPIs lifecycle description so it states that each feature runs
after its own initTableInstanceData, while later-registered features’ instance
data and APIs may still be unavailable. Apply the same documentation update in
docs/framework/octane/guide/custom-features.md:159-159,
docs/framework/preact/guide/custom-features.md:159-159,
docs/framework/react/guide/custom-features.md:159-159,
docs/framework/solid/guide/custom-features.md:153-153,
docs/framework/svelte/guide/custom-features.md:153-153, and
docs/framework/vue/guide/custom-features.md:153-153.
Source: MCP tools
|
|
||
| ```bash | ||
| npm install @tanstack/react-table@beta | ||
| npm install @tanstack/react-table |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
for package in \
`@tanstack/react-table` \
`@tanstack/solid-table` \
`@tanstack/svelte-table`
do
npm view "$package" version dist-tags --json
doneRepository: TanStack/table
Length of output: 1481
🌐 Web query:
@tanstack/react-table npm latest version 9.0.0 stable dist-tags
💡 Result:
As of August 4, 2026, the latest stable version of @tanstack/react-table is 8.21.3 [1][2][3]. Version 9.0.0 has not yet reached a stable release [3][4][5]. The package is currently in an active beta testing phase for version 9.0.0, with regular pre-release updates being published [4][5][6]. As of today, the most recent pre-release version is 9.0.0-beta.80 [4]. In the npm registry, the dist-tag "latest" continues to point to the stable 8.21.3 release [1][3]. Those wishing to test the ongoing V9 development can install the latest beta by using the @beta dist-tag or by explicitly specifying the version (e.g., npm install @tanstack/react-table@beta) [7][3].
Citations:
- 1: https://www.npmjs.com/package/@tanstack/react-table
- 2: https://npmx.dev/package/@tanstack/react-table/v/8.21.3
- 3: https://www.npmjs.com/package/@tanstack/react-table?activeTab=versions
- 4: https://github.com/TanStack/table/releases/tag/v9.0.0-beta.80
- 5: https://github.com/TanStack/table/releases
- 6: https://github.com/TanStack/table/releases/tag/v9.0.0-beta.78
- 7: npm outdated shows the latest @tanstack/react-table is 0.0.1-alpha.0 #3970
Pin these installs to the v9 beta tag.
npm install uses the latest tag, which resolves to 8.21.3; the docs currently describe v9. Add @beta to the React/Solid/Svelte install commands, or change the surrounding v9 content to target the existing latest 8.x release.
[documentation_data_integrity]
📍 Affects 3 files
docs/framework/react/quick-start.md#L10-L10(this comment)docs/framework/solid/quick-start.md#L10-L10docs/framework/svelte/quick-start.md#L12-L12
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/framework/react/quick-start.md` at line 10, Update the install commands
in docs/framework/react/quick-start.md:10-10,
docs/framework/solid/quick-start.md:10-10, and
docs/framework/svelte/quick-start.md:12-12 to install the v9 beta package tag by
adding `@beta` to each framework-specific package, keeping the surrounding v9
documentation consistent.
| ``` | ||
|
|
||
| Starting in beta.59, `createTable` and `createAppTable` take only options, `table.state` is absent, and `subscribeTable` and `SubscribeSource` are no longer exported. Use native tracked Svelte reads and `$derived` projections. | ||
| In v9, `createTable` and `createAppTable` take only options, `table.state` is absent, and `subscribeTable` and `SubscribeSource` are no longer exported. Use native tracked Svelte reads and `$derived` projections. |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
Update the skill version metadata for the stable release.
This text now describes the APIs as v9, but the front matter still declares library_version: '9.0.0-beta.80' at Line 9. Update that metadata to the stable v9 version used by this release, or keep the guidance explicitly beta-scoped.
🧰 Tools
🪛 SkillSpector (2.4.4)
[error] 132: [MP3] Memory Manipulation: Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
Remediation: Protect agent memory and state from modification by untrusted content. Use read-only memory for critical instructions and validate all state changes.
(Memory Poisoning (MP3))
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packages/svelte-table/skills/table-state/SKILL.md` at line 170, Update the
front matter metadata in the skill document so library_version matches the
stable v9 release described by the API guidance, or revise the guidance to
explicitly remain beta-scoped; keep the version declaration and surrounding
documentation consistent.
|
Congrats @KevinVandy! Thank you for all your hard work on v9! |
🎯 Changes
✅ Checklist
pnpm run test:pr.🚀 Release Impact
Summary by CodeRabbit
New Features
Documentation